ORDER BY 关键字

发表于 2018-3-5 19:56:55 | 分类于 SQL |

ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。

语法

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

示例

样本数据库与 SELECT 语句 一章相同。

ORDER BY 示例

从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:

SELECT * FROM Websites
ORDER BY alexa;

输出结果:

mysql> SELECT * FROM Websites
    -> ORDER BY alexa;

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
+----+--------------+---------------------------+-------+---------+

ORDER BY DESC 示例

从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:

SELECT * FROM Websites
ORDER BY alexa DESC;

输出结果:

mysql> SELECT * FROM Websites
    -> ORDER BY alexa DESC;

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
+----+--------------+---------------------------+-------+---------+

ORDER BY 多列示例

从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:

SELECT * FROM Websites
ORDER BY country,alexa;

执行输出结果:

mysql> SELECT * FROM Websites
    -> ORDER BY country,alexa;

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

更多

ORDER BY 多列补充

ORDER BY 多列的时候,先按照第一个 column name 排序,再按照第二个 column name 排序;如上述最后一个例子:

  • 先将 country 值这一列排序,同为 CN 的排前面,同属 USA 的排后面;
  • 然后在同属 CN 的这些多行数据中,再根据 alexa 值的大小排列。
  • ORDER BY 排列时,不写明 ASC DESC 的时候,默认是 ASC。

通过非选择列进行排序

通常,ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。